package com.mamesoft.namibiamc.beans;

import com.mamesoft.namibiamc.tools.JDBC;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSet;
import hirondelle.date4j.DateTime;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.TimeZone;

public class PazientiVisiteBean implements Serializable {

    private LoginBean loginBean;
    private String medico;
    private String tipo;
    private String descrizione;
    private String data;
    private String foto;

    /** Creates a new instance of VisiteBean */
    public PazientiVisiteBean() {
    }

    public List<PazientiVisiteBean> visiteEffettuate() {

        Connection c = null;
        List<PazientiVisiteBean> l = new ArrayList<PazientiVisiteBean>();
        try {
            c = JDBC.connect();
            String q = "SELECT nome, cognome, data, tipo_visita, descrizione "
                    + "FROM cartella "
                    + "JOIN anagrafe ON (cartella.mID = anagrafe.ID) "
                    + "WHERE pID='" + getLoginBean().getId() + "' AND is_fatta='T'";
            ResultSet set = JDBC.executeQuery(q, c);
            while (set.next()) {
                PazientiVisiteBean v = new PazientiVisiteBean();
                v.setMedico(set.getString("nome") + " " + set.getString("cognome"));
                v.setDescrizione(set.getString("descrizione"));
                v.setTipo(set.getString("tipo_visita"));

                DateTime t = new DateTime(set.getTimestamp("data").toString());
                v.setData(t.format("DD/MM/YYYY hh:mm:ss"));

                l.add(v);
            }
            set.close();
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        } finally {
            if (c != null) {
                try {
                    c.close();
                } catch (SQLException ex) {
                }
            }
        }
        if (l.isEmpty()) {
            return null;
        } else {
            return l;
        }
    }

    public List<PazientiVisiteBean> visiteDaFare() {

        Connection c = null;
        List<PazientiVisiteBean> l = new ArrayList<PazientiVisiteBean>();
        try {
            c = JDBC.connect();
            String q = "SELECT nome, cognome, data, tipo_visita, descrizione "
                    + "FROM cartella "
                    + "JOIN anagrafe ON (cartella.mID = anagrafe.ID) "
                    + "WHERE pID='" + getLoginBean().getId() + "' AND is_fatta='F' "
                    + "AND richiami>0 "
                    + "ORDER BY data ASC";
            ResultSet set = JDBC.executeQuery(q, c);
            while (set.next()) {
                PazientiVisiteBean v = new PazientiVisiteBean();
                v.setMedico(set.getString("nome") + " " + set.getString("cognome"));
                v.setDescrizione(set.getString("descrizione"));
                v.setTipo(set.getString("tipo_visita"));

                DateTime t = new DateTime(set.getTimestamp("data").toString());
                v.setData(t.format("DD/MM/YYYY hh:mm:ss"));

                DateTime today = DateTime.today(TimeZone.getDefault());
                if ((t.numDaysFrom(today) >= -7) || t.isInThePast(TimeZone.getDefault())) {
                    v.setFoto("/images/todo_urgent.png");
                } else {
                    v.setFoto("/images/todo.gif");
                }

                l.add(v);
            }
            set.close();
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        } finally {
            if (c != null) {
                try {
                    c.close();
                } catch (SQLException ex) {
                }
            }
        }
        if (l.isEmpty()) {
            return null;
        } else {
            return l;
        }
    }

    /**
     * @return the medico
     */
    public String getMedico() {
        return medico;
    }

    /**
     * @param medico the medico to set
     */
    public void setMedico(String medico) {
        this.medico = medico;
    }

    /**
     * @return the tipo
     */
    public String getTipo() {
        return tipo;
    }

    /**
     * @param tipo the tipo to set
     */
    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    /**
     * @return the descrizione
     */
    public String getDescrizione() {
        return descrizione;
    }

    /**
     * @param descrizione the descrizione to set
     */
    public void setDescrizione(String descrizione) {
        this.descrizione = descrizione;
    }

    /**
     * @return the data
     */
    public String getData() {
        return data;
    }

    /**
     * @param data the data to set
     */
    public void setData(String data) {
        this.data = data;
    }

    /**
     * @return the loginBean
     */
    public LoginBean getLoginBean() {
        return loginBean;
    }

    /**
     * @param loginBean the loginBean to set
     */
    public void setLoginBean(LoginBean loginBean) {
        this.loginBean = loginBean;
    }

    /**
     * @return the foto
     */
    public String getFoto() {
        return foto;
    }

    /**
     * @param foto the foto to set
     */
    public void setFoto(String foto) {
        this.foto = foto;
    }
}